package com.food.controller;

import com.food.common.R;
import com.food.entity.dto.FoodDto;
import com.food.entity.pojo.Food;
import com.food.entity.vo.PageVo;
import com.food.service.FoodService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author author
 * @since 2025-07-03
 */
@RestController
@RequestMapping("/food")
public class FoodController {

    @Autowired
    private FoodService foodService;

    /**
     * 获取食品列表接口
     * 根据传入的食品查询条件，返回符合条件的食品列表分页信息
     *
     * @param foodDto 食品查询条件，包含食品名称、类型等查询参数
     * @return 返回包含食品列表分页信息的响应对象R
     */
    @PostMapping("/list")
    public R listFood(@RequestBody FoodDto foodDto){
        PageVo<Food> foodPageVo = foodService.listFood(foodDto);
        return R.success(foodPageVo);
    }

    /**
     * 更新食品信息接口
     * 该接口用于更新食品的相关信息
     *
     * @param food 包含更新信息的食品对象
     * @return 返回操作结果，成功为R.success(null)
     */
    @PostMapping("/update")
    public R updateFood(@RequestBody Food food){
        foodService.updateFood(food);
        return R.success(null);
    }

    /**
     * 添加食品接口
     * 该接口用于将新的食品信息添加到系统中
     *
     * @param food 要添加的食品信息，类型为Food
     * @return 返回操作结果，成功则返回成功信息
     */
    @PostMapping("/add")
    public R addFood(@RequestBody Food food){
        foodService.addFood(food);
        return R.success(null);
    }

    /**
     * 删除食品接口
     * 根据提供的食品ID删除对应的食品信息
     *
     * @param id 食品ID
     * @return 操作结果，成功返回R.success(null)
     */
    @GetMapping("/delete")
    public R deleteFood(Integer id){
        foodService.deleteFood(id);
        return R.success(null);
    }

}
